package com.ruge.sorm.util;

import java.lang.reflect.Method;

/**
 * 封装常用反射操作
 *
 * @author admin
 * @version 2023/10/21 10:17
 **/
public class ReflectUtils {
    /**
     * 调用obj对象对应属性fieldName的get方法
     *
     * @param obj
     * @param fieldName
     * @return
     */
    public static Object invokeGet(String fieldName, Object obj) {
        try {
            Class<?> c = obj.getClass();
            Method m = c.getDeclaredMethod("get" + StringUtils.firstCharToUpperCase(fieldName), null);
            return m.invoke(obj, null);

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 调用obj对象对应属性fieldName的set方法
     *
     * @param obj1
     * @param fieldName
     * @return
     */
    public static void invokeSet(String fieldName, Object obj1, Object obj2) {
        try {
            Class<?> c = obj1.getClass();
            Method m = c.getDeclaredMethod("set" + StringUtils.firstCharToUpperCase(fieldName), obj2.getClass());
            m.invoke(obj1, obj2);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
